Smooth operation of modern-day software systems may often be ensured through rigorous verification processes. For a particular system, these processes may involve performing multiple tests on the system, which may include checking various system properties. The tests may be run without executing one or more portions of code in the software system. Regardless of how a software system may be verified, one goal often associated with verification is to achieve good test and/or analysis coverage. Here, the term “coverage” may refer to those portions of a software system that are examined by, e.g., analysis and/or tests used in the verification process. Typically, greater coverage often translates to more paths being tested in the software system. Usually, the more paths that are tested in the software system, the greater the assurance that the software system is operating as expected.
A software system may include a model that represents a system. The model may be textual and/or graphical, and may be executed to predict, analyze, verify and/or examine the behavior of the system. At any stage in a design, verification and/or analysis process of a model, it may be necessary to test and/or statically analyze the model. Various tools may be used for such analysis and testing, and one or more portions of the model may be provided to those tools via, e.g., various Application Program Interfaces (APIs). APIs used for testing and/or analysis may be designed in compliance with industry standards and/or may be custom-designed for a particular application or a set of applications (e.g., a proprietary design).